class Resoconti::MovimentiMagazzinoController < DefaultController
  require_role self.parent_name.underscore
  #record_select :search_on => [:numero, :descrizione], :order_by => :numero, :full_text_search => true 
  
  active_scaffold :movimento_magazzino do |config|
    config.label = Application.controller_label(self)
    list.sorting = [:data => 'DESC']
    config.actions.add :field_search, :export

    # definizione colonne
    columns = [:data, :tipo_movimento_magazzino, :riferimento, :note, :dettagli_movimento_magazzino]
    columns_form = [:data, :tipo_movimento_magazzino, :riferimento_id, :note, :dettagli_movimento_magazzino]

    # visualizzazione colonne
    config.columns = config.show.columns = config.list.columns = columns
    config.update.columns = config.create.columns = columns_form
    config.field_search.columns = columns_form + [:riferimento]
    
    # configurazione colonne
    config.columns[:tipo_movimento_magazzino].form_ui = :select
    #config.columns[:dettagli_movimento_magazzino].form_ui = :select
    config.columns[:tipo_movimento_magazzino].update_column = :riferimento_id
    config.columns[:note].inplace_edit = :ajax
    config.columns[:note].options = SMALL_TEXTAREA
    config.columns[:tipo_movimento_magazzino].label = "Tipo movimento"
    #config.columns[:riferimento_id].search_ui = :text
  end

  def controller_before_create_update_save(record)
    record.riferimento_type = record.tipo_movimento_magazzino.riferimento_type unless record.tipo_movimento_magazzino.nil?
  end
  def calcola_giacenza(record)
    record.dettagli_movimento_magazzino.each { |i|
      i.prodotto_magazzino.update_attributes(:giacenza => i.prodotto_magazzino.dettagli_movimento_magazzino.sum(:quantita))
    }
  end
  def riferimento_dettaglio(record)
    record.dettagli_movimento_magazzino.each { |i|
      i.update_attributes(:riferimento_type => record.riferimento_type)
      i.update_attributes(:riferimento_id => record.riferimento_id)
    }
  end
  def after_create_save(record)
    calcola_giacenza(record)
    riferimento_dettaglio(record)
  end
  def after_update_save(record)
    calcola_giacenza(record)
    riferimento_dettaglio(record)
  end
  
  def self.condition_for_riferimento_id_column(column, value, like_pattern = nil)
    ["#{column.search_sql} = ?", value.to_i] unless value.blank?
  end
end
